package jmine.tec.report.api;

import java.util.List;

import jmine.tec.report.api.table.ReportCell;

/**
 * Interface que deve ser implementada por cabeçalhos de relatórios
 * 
 * @author lundberg
 */
public interface ReportHeader {

    /**
     * Obtém o número de parâmetros que devem ser exibidos em cada linha do cabeçalho
     * 
     * @return int
     */
    int getParametersPerRow();

    /**
     * Define o número de parâmetros que devem ser exibidos em cada linha do cabeçalho
     * 
     * @param parametersPerRow parametersPerRow
     */
    void setParametersPerRow(int parametersPerRow);

    /**
     * Adiciona o valor de um parâmetro ao cabeçalho
     * 
     * @param parameter parameter
     */
    void addParameter(ReportCell parameter);

    /**
     * Retorna as células que devem ser apresentadas no cabeçalho do relatório
     * 
     * @return lista de reportcell
     */
    List<ReportCell> getParameters();

    /**
     * Retorna o título do relatório.
     * 
     * @return title
     */
    String getTitle();

    /**
     * Define o título do relatório
     * 
     * @param title title
     */
    void setTitle(String title);

    /**
     * Retorna o nome do arquivo (sem extenção)
     * 
     * @return fileName
     */
    String getFileName();

    /**
     * Define o nome do arquivo.
     * 
     * @param fileName fileName
     */
    void setFileName(String fileName);

    /**
     * Limpa os parâmetros do {@link ReportHeader}.
     */
    void clearParameters();

}
